Hyper Threading |
"Новый Intel Pentium IV с технологией Hyper-Threading откроет вам и вашему компьютеру новые горизонты...". Рекламу мы все не любим, но влияет она на наше сознание сильно. Я как-то наблюдал картинку в компьютерном салоне: семейка, совершенно не разбирающаяся в железе, выбирает процессор для домашнего компьютера. Консультант: "Какой процессор будете ставить?". Семья: "Нам бы подешевле, но помощнее". Консультант: "Тогда я предлагаю Athlon XP". Семья: "Чего? Нет, нам Pentium IV с этой, как ее... ну короче гипер!" :). Не спорю, бренд у Intel р аскручен на порядок лучше, но все же их инженеры не зря едят свой кусок хлеба с черной икрой. Так что же такое Hyper-Threading - очередной маркетинговый ход или действительно интересная и стоящая технология? Сейчас, почти через два года после официального анонса этой технологии и спустя год с момента ее появления на рынке домашних компьютеров, можно спокойно анализировать накопленные данные и делать выводы. Не то что сначала... НЕМНОГО ИСТОРИИСлухи и кое-какая официальная информация о Jackson/SMT (Simultaneous Multi-Threading - рабочее название технологии) появились еще на весеннем мероприятии под названием Intel Developer Forum Spring 2001. Официально HT (наиболее распространенное сокращение Hyper-Threading) была представлена на Intel Developer Forum Fall 2001, который проходил, как несложно догадаться из названия, осенью 2001 года. Только не перепутай с технологией Hyper Transport от AMD. А то некоторые спрашивают: "Неужели в Athlon 64 есть Hyper-Threading?". Реально же новая технология появилась в процессорах Intel Xeon MP (напомню, что буквами MP обозначаются процессоры, предназначенные для работы в мультипроцессорных системах, от четырех и более камней) на ядре Foster и SMP-процессорах (Symmetrical MultiProcessing, двухпроцессорные системы) Intel Xeon на ядре Prestonia зимой 2002 года. Появление технологии было воспринято очень благожелательно - еще бы, ведь на презентации показывалось почти 30% увеличение производительности! Однако восторг быстро прошел, когда появились первые сервера на новых Xeon'ах. Серьезного преимущества серверные системы Intel не получили. Вероятно тогда (а может, это задумывалось с самого начала) Intel решила перенести технологию на настольные системы и выпустила Pentium IV (уже третьей по счету модификации) с поддержкой HT. Появились они осенью 2002 года вместе с достаточно агрессивной рекламной кампанией: "Йоу, два проца по цене одного! Клево!". Рядовые пользователи услышали еще одно непонятное название и прибавили его к списку "хочу, чтоб в моем компьютере было это". Давай теперь перейдем к описанию самой технологии, чтобы ты не уподоблялся толпе, которая ничего, кроме названия, об НТ и не слышала. МЫ ДЕЛИЛИ АПЕЛЬСИН...Итак, что же такое HT? Давай сначала разберемся со словом Thread, присутствующим в названии. Уже достаточно давно для ускорения работы программ стали использовать многопоточное программирование. Сложные, длительные, ресурсоемкие вычисления выделяют в отдельный поток (Thread). Он занимает свои регистры процессора, имеет свой стек. Только адресное пространство у него общее со всеми потоками процесса. Одновременно процессор может выполнять только один поток, однако на переключение между потоками тратится меньше времени, чем на переключение между различными процессами. А вот если в системе у нас несколько процессоров, тогда одновременно может обрабатываться и несколько потоков. Где у нас стоят несколько процессоров? Правильно, на серверах или мощных рабочих станциях, где, в основном, и запускаются приложения, использующие сложные вычисления и написанные с применением потоков. Но как может обрабатываться одновременно несколько (конкретно - два) потоков на одном процессоре? Все не так уж сложно. Процессор с HT эмулирует два логических процессора. У логического процессора есть свой контроллер прерываний, свой набор регистров, который соотносится с регистрами физического процессора с помощью Register Alias Table. Один поток редко использует все ресурсы процессора. Свободные - отдаются под другой поток в рамках логического процессора. Ну, хорошо, у нас многопроцессорная система? Не совсем. Ресурсы процессора - это абстрактное понятие. В нем существуют разные вычислительные блоки, шины, кэш. Даже в настоящей двухпроцессорной системе не все приложения будут работать быстрее, все равно существуют общие ресурсы, за которые будут бороться потоки. Что уж говорить о системе с HT? Здесь ресурсы все общие! В результате, вместо повышения производительности мы можем получить обратный эффект, что и наблюдалось в некоторых тестах. AMD вооружилась этим фактом, убеждая программистов не оптимизировать свои приложения под HT. Стабильное увеличение производительности наблюдалось только в приложениях изначально оптимизированных под многопроцессорные системы. Но и оно достигало 10-15%, а никак не 30%, как было официально заявлено. "Ну что же, и 10% неплохо", - подумали админы, и стали убеждать боссов покупать новые сервера :). Однако тут обнаружился еще один интересный факт. Вначале HT поддерживали только Windows 2000/XP, только они имели возможность работать с несколькими процессорами. Если мы ставим два Xeon'а с HT, сколько у нас получается логических процессоров? Правильно, четыре. Какая версия Windows 2000 поддерживает четыре процессора? Правильно, Server, которая весьма недешево стоит. К тому же Windows 2000 не знает, что такое логический процессор. В результате потоки могут быть распределены между двумя логическими процессорами в одном физическом, что производительности отнюдь не прибавит. XP уже понимает, что такое логический процессор, однако ставить ее на сервер нам кажется несколько неразумным... Сама же Intel не рекомендует использовать HT под Windows 2000. Есть, конечно, еще Windows 2003, но она появилась совсем недавно. Потом поддержка этой технологии появилась и в Linux. Официально - это Red Hat, SuSE, Red Flag и COSIX, они имеют право на использование логотипов Intel Pentium IV и HT. Неофициальный же список несколько больше :). Как видишь, Xeon'ы с HT получили большее распространение не на серверах, а на мощных рабочих станциях. Процессы рендеринга, моделирования, профессиональные дизайнерские пакеты - все это неплохо ускорялось на системах с HT. Больше всех радовались программисты. Новые версии компиляторов С++ от Intel, оптимизированные под HT, давали чуть ли не 50% прирост скорости компилирования. Пока еще ни одно приложение так и не побило этот рекорд. В принципе, следующее решение Intel было вполне логичным: внедрить HT в Pentium IV для домашних систем и убедить пользователей и производителей софта, что HT - это круто :). HYPER-DESKTOPИтак, почти через год после появления технологии, Intel выпустила на рынок Pentium IV с поддержкой HT. Ходят слухи, что поддержка HT существовала и в предыдущих вариантах Pentium IV, просто не была включена. Верится с трудом. Почему тогда новые процессоры мало совместимы с матерями под предыдущую версию? Хотя сокет остался тот же, но потребляемая мощность и тепловыделение (греется новый камень что надо) увеличились, и старые матплаты уже не подойдут. Тоже, кстати, огромный камень в огород Intel со стороны AMD. Уже третий вариант одного процессора и опять несовместимый с материнскими платами под предыдущий. Системы на Athlon'ах модернизируются куда проще, что долгое время было одним из рекламных лозунгов AMD. Если раньше стоял Duron, то сейчас подойдет Athlon XP 2200+. Только с выходом Athlon XP 3200+ и Athlon 64 ситуация с апгрейдом слегка изменилась. Впрочем, это уже совершенно новая серия камней. Хотя первые Pentium на ядре Prescott предназначены для socket 478, скорее всего, большинство старых плат с ними работать не будет. А уже во второй половине 2004 года выйдут новые Pentium на ядре Grantsdale, которые будут использовать socket 775 и опять потребуют новые матери. Почему Intel так упорно не хочет совершенствовать свои продукты в сторону обратной совместимости - непонятно. Пользователей долго убеждали, что технология Hyper-Threading очень полезна на домашнем компьютере. В качестве примеров приводилось одновременное кодирование mp3, архивирование, прослушивание музыки, и все это с открытым браузером, почтовиком и Word'ом. Особенно одаренные личности включали в этот список еще и запись CD :). Что-то мы не встречали пока таких маньяков, у которых одновременно выполняется столько задач. Хотя, секунду... Word, браузер, почта, музыка... нет, диск сейчас не пишется :). Так вот, имея на борту процессор с HT, пользователь может запускать сложные фоновые процессы и спокойно продолжать работать без тормозов. Многие обладатели процессоров с HT радостно замечают по этому поводу: "Раньше, когда какое-нибудь приложение занимало ~100% процессорного времени, почти ничего на компьютере сделать нельзя было. А сейчас ничего, даже курсор двигается и окошки отрисовываются :)". Вот, в основном, и все отличие системы с HT с практической точки зрения. Если смотреть тесты - видим все те же 10% увеличения производительности. В играх же увеличение производительности почти не наблюдается. Хотя, теоретически, многопоточные игровые приложения могут быть намного быстрее обычных. Так, например, в отдельные потоки можно выделить AI, скрипты и все остальное, кроме, собственно, движка. Intel даже выпустила специальный компилятор OpenMP, который анализирует код и выделяет потоки, а также расставляет инструкции pause, предназначенные для корректной работы HT. Однако разработчики не спешат вводить тотальную многопоточность. Во-первых, это усложняет кодинг. А во-вторых, на процессорах AMD производительность от этого ну никак не увеличится, скорее наоборот :). Как видишь, дома от Hyper-Threading тоже не очень много пользы. Ждали мы явно большего. К тому же это в ex-USSR каждый может себе позволить приобрести XP, а вот остальному миру придется покупать лицензию (и неплохо бы установить SP1), чтобы вкусить все прелести двух логических процессоров. Хорошо хоть Microsoft пошел навстречу и включил поддержку HT в XP Home Edition. HYPER-FUTURE?С выходом HT некоторые издания говорили: "Intel закончила гонку мегагерц", "Мегагерцы теперь - не главное". Звучит это довольно смешно, особенно если вспомнить Athlon'ы, реальная частота которых намного ниже соответствующих Pentium'ов (реальная частота AthlonXP 3200+, например, 2 гигагерца). Не говоря уже о количестве нововведений в Athlon 64, который по производительности обгоняет любой Pentium IV, хотя частоты его почти не увеличились по сравнению с Barton'ами. Безусловно, Intel представила интересную и перспективную технологию, однако конечная реализация оказалась далека от совершенства. К тому же Intel наступила на те же грабли, что и раньше с MMX, SSE, SSE2. Задействование технологии и увеличение производительности во многом зависит от программистов (и Microsoft :)). Однако в этот раз оптимизация под новую технологию приведет к потере производительности в процессорах AMD, чего разработчики делать не хотят. В принципе, у Intel и AMD есть договор о кросс-лицензировании технологий. Так что появление поддержки HT у Athlon'ов развязало бы программистам руки и ускорило совершенствование технологии. Но дальше слухов дело пока не зашло, да и не стоит этого ждать в ближайший год - слишком много сил ушло у инженеров AMD на создание новых Athlon 64. Отказываться от HT Intel пока тоже не собирается. В новых Prescott технология будет усовершенствована. По официальной информации, будет улучшен контроль за распределением ресурсов между потоками, что должно увеличить производительность и исключить ее снижение, которое наблюдается в некоторых случаях. "Железо" |